package com.suixinsanren.design.responsibilitychain.demo01;

import java.util.List;
import java.util.Objects;

public abstract class AbsCheckStudent {

    protected AbsCheckStudent absCheckStudent;

    // 设定下一个处理者
    public void setAbsCheckStudent(AbsCheckStudent absCheckStudent) {
        this.absCheckStudent = absCheckStudent;
    }

    // 此方法是业务层调用的方法，即业务调用此方法，把学生的集合做参数传进来即可。
    public void handleCheck(List<Student> studentList) {
        if (Objects.nonNull(studentList) && !studentList.isEmpty()) {
            List<Student> checkIsOk = checkStudent(studentList);
            if (Objects.nonNull(absCheckStudent) && Objects.nonNull(checkIsOk) && !checkIsOk.isEmpty()) {
                absCheckStudent.handleCheck(checkIsOk);
            }
        }
    }

    // 此方法是由不同的子类来进行不同的处理实现
    public abstract List<Student> checkStudent(List<Student> studentList);
}
